import { IPSAjaxControl } from '../ipsajax-control';
import { IPSControlContainer } from '../ipscontrol-container';
import { IPSDEFormItem } from './ipsdeform-item';
import { IPSDEFormItemUpdate } from './ipsdeform-item-update';
import { IPSDEFormItemVR } from './ipsdeform-item-vr';
import { IPSDEFormPage } from './ipsdeform-page';
import { IPSLayoutContainer } from '../layout/ipslayout-container';

/**
 *
 * @export
 * @interface IPSDEForm
 */
export interface IPSDEForm
  extends IPSAjaxControl,
    IPSLayoutContainer,
    IPSControlContainer {
  /**
   * 表单功能模式
   * @description 值模式 [云实体表单功能模式] {WFACTION：流程操作、 WIZARDFORM：向导表单 }
   * @type {( string | 'WFACTION' | 'WIZARDFORM')}
   */
  formFuncMode: string | 'WFACTION' | 'WIZARDFORM';

  /**
   * 表单样式
   * @type {string}
   */
  formStyle: string;

  /**
   * 表单宽度
   * @type {number}
   * @default 0.0
   */
  formWidth: number;

  /**
   * 表单项更新集合
   *
   * @type {IPSDEFormItemUpdate[]}
   */
  getPSDEFormItemUpdates(): IPSDEFormItemUpdate[] | null;

  findPSDEFormItemUpdate(objKey: any): IPSDEFormItemUpdate | null;

  /**
   * 表单项值规则集合
   *
   * @type {IPSDEFormItemVR[]}
   */
  getPSDEFormItemVRs(): IPSDEFormItemVR[] | null;

  findPSDEFormItemVR(objKey: any): IPSDEFormItemVR | null;

  /**
   * 表单项集合
   *
   * @type {IPSDEFormItem[]}
   */
  getPSDEFormItems(): IPSDEFormItem[] | null;

  findPSDEFormItem(objKey: any): IPSDEFormItem | null;

  /**
   * 表单分页集合
   *
   * @type {IPSDEFormPage[]}
   */
  getPSDEFormPages(): IPSDEFormPage[] | null;

  findPSDEFormPage(objKey: any): IPSDEFormPage | null;

  /**
   * 表单分页头部位置
   * @description 值模式 [实体表单分页位置] {LEFT：左边、 TOP：上方、 RIGHT：右边、 BOTTOM：下方 }
   * @type {( string | 'LEFT' | 'TOP' | 'RIGHT' | 'BOTTOM')}
   */
  tabHeaderPos: string | 'LEFT' | 'TOP' | 'RIGHT' | 'BOTTOM';

  /**
   * 移动端部件
   * @type {boolean}
   * @default false
   */
  mobileControl: boolean;

  /**
   * 隐藏分页头部
   * @type {boolean}
   */
  noTabHeader: boolean;
}
